package com.hlbspringcloud.mq;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;

/**
 * @Author huanglibin
 * @Project mq
 * @Description 消息发送者
 * @Date 2020-12-02-15-01-51
 * @Version 1.0
 */
public class SingleSender {
    /**
     * 队列名称
     */
    public final static String queryName = "singleQuery";

    public void sendMessage() throws Exception {
        //获取连接
        Connection rabbitmqConnection = RabbitmqUntil.getRabbitmqConnection();
        //获取管道
        Channel channel = rabbitmqConnection.createChannel();

        /**
         * 队列创建(如果队列存在，则不进行创建)
         * 参数1：队列名
         * 参数2：是否支持持久化，默认队列在内存中，重启会丢失。设置为true,会保存到erlang自带的数据库中
         * 参数3：当连接关闭后是否自动删除队列；是否私有队列，如果私有，其他通道不能访问当前队列
         * 参数4：当没有消费者，是否自动删除队列
         * 参数5：其他参数
         */
        channel.queueDeclare(queryName,false,false,false,null);

        //发送的信息
        String msg = "测试发送消息";
        System.out.println(msg);
        /**
         * 发布信息
         * 参数1：交互机名，如果为空表示匿名转发。如果不为空第二个参数为路由键routingKey，否则为队列名
         * 参数2：routingKey/query
         * 参数3：channel的继承属性 BasicProperties basicProperties = new AMQP.BasicProperties(){}
         * 参数4：推送的信息
         */
        channel.basicPublish("",queryName,null,msg.getBytes());
        //关闭资源
        channel.close();
        rabbitmqConnection.close();
    }

    public static void main(String[] args) throws Exception {
        SingleSender singleSender = new SingleSender();
        singleSender.sendMessage();
    }
}
